// 数位和是最后一位的倍数
// 测试链接：https://www.lanqiao.cn/problems/5891/learning/?contest_id=145
// 提交以下code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

#define ll long long
const ll MOD = 998244353;

ll cnt(string& s)
{
    int m = s.size();
    ll dp[m][1801][10];
    memset(dp, -1, sizeof dp);
    function<ll(int, int, int, bool, bool)> f = [&](int i, int sum, int pre, bool is_limit, bool is_num) -> ll
    {
        if(i == m)
        {
            if(!is_num) return 0; // 不是一个有效的数字
            if(pre <= 0) return 0; // 最后一个数位是 0 或者只有一位数，无效
            return (sum - pre) % pre == 0; // 检查是否是神奇数
        }
        // 缓存命中
        if(!is_limit && is_num && dp[i][sum][pre] != -1) return dp[i][sum][pre];
        
        ll ans = 0;
        // 跳过这个数位
        if(!is_num) ans = f(i + 1, sum, pre, false, false);
        int up = is_limit ? s[i] - '0' : 9;
        for(int d = 1 - is_num; d <= up; ++d)
        {
            ans = (ans + f(i + 1, sum + d, d, is_limit && d == up, true)) % MOD;
        }
        if(!is_limit && is_num) dp[i][sum][pre] = ans;
        return ans;
    };

    return f(0, 0, -1, true, false);
}

bool check(string& s)
{
    if(s.size() < 2) return false;
    int pre = s.back() - '0';
    if(pre == 0) return false;
    int sum = 0;
    for(int i = 0; i < s.size() - 1; ++i)
    {
        sum += s[i] - '0';
    }
    return sum % pre == 0;
}

ll compute(string& a, string& b)
{
    ll ans = (cnt(b) - cnt(a) + MOD) % MOD;
    if(check(a)) ans = (ans + 1) % MOD;
    return ans;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string a, b;
    cin >> a >> b;
    printf("%lld\n", compute(a, b));

    return 0;
}